package com.sqx.modules.errand.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;

@Data
@ApiModel("订单")
@Accessors(chain = true)
@TableName(value = "sys_indent")
public class Indent implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * 订单表主键id
     */
    @TableId(value = "indent_id", type = IdType.AUTO)
    private Long indentId;

    /**
     * 订单类型 1即时代驾 2朋友代叫 3预约代驾
     */
    private String indentType;
    /**
     * 价格计算方式 1包时价格 2按时长收费
     */
    private Integer moneyType;

    /**
     * 预约时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime hopeTime;

    /**
     * 乘车人手机
     */
    private String customPhone;

    /**
     * 乘车人姓名
     */
    private String customName;


    /**
     * 包时时间(分钟)
     */
    private Integer timeNum;

    /**
     * 范围id
     */
    private Long areaId;
   /**
     * 用户id
     */
    private Long userId;
    /**
     * 订单号
     */
    private String indentNumber;
    /**
     * 车辆类型
     */
    private Integer type;
    /**
     * 市id
     */
    private Long cityId;
    /**
     * 起点省
     */
    private Long shipAddressId;
    /**
     * 起点省
     */
    private String shipProvince;
    /**
     * 起点市
     */
    private String shipCity;
    /**
     * 起点区
     */
    private String shipDistrict;
    /**
     * 下单人姓名
     */
    private String shipUserName;

    /**
     * 下单人手机
     */
    private String shipUserPhone;

    /**
     * 出发地址
     */
    private String shipAddress;


    /**
     * 出发地址经度
     */
    private Double shipAddressLongitude;

    /**
     * 出发地址维度
     */
    private Double shipAddressLatitude;
    /**
     * 目的地址id
     */
    private Long deliveryAddressId;
    /**
     * 目的省
     */
    private String deliveryProvince;
    /**
     * 目的市
     */
    private String deliveryCity;
    /**
     * 目的区
     */
    private String deliveryDistrict;
    /**
     * 目的地址
     */
    private String deliveryAddress;

    /**
     * 目的地址经度
     */
    private Double deliveryAddressLongitude;

    /**
     * 目的地址维度
     */
    private Double deliveryAddressLatitude;

    /**
     * 预估公里数
     */
    private BigDecimal distance;
    /**
     * 实际公里数
     */
    private BigDecimal realDistance;

    /**
     * 实际所用时长
     */
    private BigDecimal realDuration;
    /**
     * 预计所用时长
     */
    private BigDecimal duration;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 优惠券id
     */
    private Long couponId;
    /**
     * 优惠金额
     */
    private BigDecimal couponMoney;

    /**
     * 订单基础价格(不使用任何优惠)
     */
    private BigDecimal indentBasicsMoney;
    /**
     * 支付方式  1微信 2支付宝 3余额
     */
    private String modeOfPayment;

    /**
     * 订单状态 0待接单 1进行中 2待支付 3已完成 4已取消
     */
    private Integer indentState;

    /**
     * 下单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 开始等待时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startWaitTime;

    /**
     * 结束等待时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endWaitTime;

    /**
     * 等待总时长(分钟)
     */
    private Integer waitTime;
    /**
     * 免费等待时长
     */
    private Integer freeWaitTime;

    /**
     * 等待总费用
     */
    private BigDecimal waitMoney;


    /**
     * 接单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime receivingTime;
    /**
     * 接到乘客时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    /**
     * 完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime finishTime;

    /**
     * 师傅收入
     */
    private BigDecimal riderMoney;
    /**
     * 代理订单价格
     */
    private BigDecimal agentIndentMoney;
    /**
     * 代理收入金额
     */
    private BigDecimal agentMoney;

    /**
     * 订单价格（最终支付价格）
     */
    private BigDecimal indentMoney;
    /**
     * 预估价格
     */
    private BigDecimal estimateMoney;

    /**
     * 平台分成比例
     */
    private BigDecimal pingRate;
    /**
     * 平台本单收入
     */
    private BigDecimal platformMoney;

    /**
     * 师傅id
     */
    private Long riderUserId;

    /**
     * 上级抽佣金额
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal userScaleMoney;

    /**
     * 上级id
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long userScaleUserId;

    /**
     * 上上级抽佣金额
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private BigDecimal userTwoMoney;

    /**
     * 上上级id
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long userTwoUserId;

    /**
     * 是否是转单0否 1是
     */
    private Integer isTransfer;

    /**
     * 师傅奖励金额
     */
    private BigDecimal riderRewardMoney;


    /**
     * 0下单人 1乘车人
     */
    private Integer payUser;

    /**
     * 师傅取消订单罚金
     */
    private BigDecimal riderFine;
    /**
     * 支付订单号
     */
    private String payOrdersNo;
    /**
     * 用户评价等级
     */
    @ApiModelProperty("用户评价等级")
    private String evaluate;

    /**
     * 用户评价内容
     */
    @ApiModelProperty("用户评价内容")
    @TableField(value = "evaluate_message")
    private String evaluateMessage;
    /**
     *订单价格计算
     */
    private String moneyJson;
    /**
     * 是否是夜间时段 0否 1是
     */
    private Integer isNight = 0;
    /**
     * 是否是凌晨时段 0否 1是
     */
    private Integer isBeforeDawn = 0;
    /**
     *下单类型 1:用户下单 2:司机下单
     */
    private Integer addType;
    //坐标串
    String polyline;

    /**
     * 是否已推送 0否 1是
     */
    Integer isPushMsg;
    /**
     * 订单距离师傅的位置
     */
    @TableField(exist = false)
    private BigDecimal riderDistance;
    /**
     * 时间配置id
     */
    private Long timeId;
}
